package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper  // 确保 @Mapper 注解只在这里
public interface UserMapper {
    //判断管理员登录用户名和密码正确性
    @Select("SELECT * FROM user_tb WHERE user_name = #{user_name} AND password = #{password}")
    User findUser(@Param("user_name") String user_name, @Param("password") String password); // 查找管理员


    // 查询所有用户信息
    @Select("SELECT * FROM user_tb")
    List<User> findUserAll();  // 获取所有用户

    // 根据ID查询用户信息
    @Select("SELECT * FROM user_tb WHERE user_id = #{userId}")
    User findUserID(Integer userId);  // 根据用户ID获取用户信息

    // 统计总用户数
    @Select("SELECT COUNT(*) FROM user_tb")
    Integer getTotalUsers();

    // 统计活跃用户数（最近 30 天登录的用户）
    @Select("SELECT COUNT(*) FROM user_tb WHERE last_login_time >= NOW() - INTERVAL 30 DAY")
    Integer getActiveUsers();

    // 统计新增用户数（最近 7 天注册的用户）
    @Select("SELECT COUNT(*) FROM user_tb WHERE create_date >= NOW() - INTERVAL 7 DAY")
    Integer getNewUsers();

    // 统计封禁用户数
    @Select("SELECT COUNT(*) FROM user_tb WHERE user_status = '封禁'")
    Integer getBannedUsers();

    // 添加用户信息
    @Insert("INSERT INTO user_tb (user_name, password, user_sex, user_birthday) " +
            "VALUES (#{user_name}, #{password}, #{user_sex}, #{user_birthday})")
    Integer insertUser(User user);  // 插入用户

    // 修改用户信息
    @Update("UPDATE user_tb SET user_name=#{user_name}, password=#{password}, user_sex=#{user_sex}, user_birthday=#{user_birthday} WHERE user_id=#{user_id}")
    Integer updateUser(User user);  // 更新用户信息

    // 根据ID删除用户信息
    @Delete("DELETE FROM user_tb WHERE user_id = #{userId}")
    Integer deleteUser(Integer userId);  // 删除用户

    //修改用户信息（对话框）
    @Update("UPDATE user_tb SET user_name = #{user_name}, music_label = #{music_label},  profile_picture = #{profile_picture},  user_sex = #{user_sex}, user_birthday = #{user_birthday}, biography = #{biography}, country_region = #{country_region} WHERE user_id = #{user_id}")
    Integer updateUserInfo(User user);

    // 根据用户ID查询用户信息
    @Select("SELECT * FROM user_tb WHERE user_id = #{user_id}")
    User getUserById(@Param("user_id") Integer userId);

    //检查用户名是否存在
    @Select("SELECT COUNT(*) FROM user_tb WHERE user_name = #{user_name}")
    boolean existsByUsername(@Param("user_name") String user_name);

    //注册页新增用户信息
    @Insert("INSERT INTO user_tb (user_name, password, profile_picture) VALUES (#{user_name}, #{password}, #{profile_picture})")
    Integer insertUserRegister(@Param("user_name") String user_name, @Param("password") String password, @Param("profile_picture") String profile_picture);


    //注册页修改密码
    @Update("UPDATE user_tb SET password = #{password} WHERE user_name = #{user_name}")
    Integer updateUserPassword(@Param("user_name") String user_name, @Param("password") String password);
}
